package org.dingfugui.triple.protocol;

import org.dingfugui.triple.rpc.RequestMessage;
import org.dingfugui.triple.rpc.ResponseMessage;

/**
 * 报文处理器
 * 用于编码和解码二进制报文
 * Created by fugui.ding on 2015/4/28.
 */
public interface Translator {

    int getMessageHeadSize();

    /**
     * 将请求参入编码为请求报文
     *
     * @param request
     * @return
     */
    byte[] encodeRequest(RequestMessage request);

    /**
     * 将返回参数编码为响应报文
     *
     * @param response
     * @return
     */
    byte[] encodeResponse(ResponseMessage response);

    /**
     * 将响应报文解码为响应参数
     *
     * @param data
     * @return
     */
    ResponseMessage decodeResponse(byte[] data);

    /**
     * 将请求报文解码为请求参数
     *
     * @param data
     * @return
     */
    RequestMessage decodeRequest(byte[] data);


}
